package aplicacion;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import javax.swing.JDialog;


import com.framework.dao.DataAccessException;
import com.framework.gui.GuiUtilities;
import com.framework.services.BusinessException;
import com.framework.services.SystemException;
import com.framework.util.FileUtilities;
import com.framework.vo.PersistentObject;

import gui.LoginPanel;
import gui.VentanaAdministradorTorre;
import vo.AdministradorTorre;
import vo.Camion;
import vo.Muelle;
import services.CargarLoginPanel;
import services.Generador;
import services.ServicesCamion;
import services.ServicesMuelle;
import services.ProductorCamiones;
import util.Cola;
import util.Monitor;

public class AppDistribuidora {
	
	private int categoria;

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		System.setProperty("categoria", "3");
		System.setProperty("ventanaPpal", "no");
		
		try{
			FileUtilities.readIniFile("c:/_Distribuidora/App.ini");
			// Cargo el driver en memoria
			Class.forName(System.getProperty("driver"));
		}
		catch (SystemException se){
			System.out.println(se.getMessage());
		}
		catch(ClassNotFoundException cne){
			System.out.println(cne.getMessage());
		}
		
		Monitor  m = new Monitor();
		ProductorCamiones prod = new ProductorCamiones(2000, m);
		
		Muelle mue1 = new Muelle(1);
		Muelle mue2 = new Muelle(2);
		Muelle mue3 = new Muelle(3);
		Muelle mue4 = new Muelle(4);
		Muelle mue5 = new Muelle(5);
		
		AdministradorTorre m1 = new AdministradorTorre(0,m, mue1);
		AdministradorTorre m2 = new AdministradorTorre(0,m, mue2);
		AdministradorTorre m3 = new AdministradorTorre(0,m, mue3);
		AdministradorTorre m4 = new AdministradorTorre(0,m, mue4);
		AdministradorTorre m5 = new AdministradorTorre(0,m, mue5);
		
		mue1.setDescripcion("Muelle 1");
		//PersistentObject mue = (PersistentObject) p;
		
		ServicesMuelle muelles = new ServicesMuelle();
		try{
			muelles.salvarMuelle(mue1);
		}
		catch(BusinessException be){
			System.out.println(be.getMessage());
		}
		catch(SystemException se){
			System.out.println(se.getMessage());
		}

		mue2.setDescripcion("Muelle 2");
		//PersistentObject mue = (PersistentObject) p;
		
		muelles = new ServicesMuelle();
		try{
			muelles.salvarMuelle(mue2);
		}
		catch(BusinessException be){
			System.out.println(be.getMessage());
		}
		catch(SystemException se){
			System.out.println(se.getMessage());
		}
		
		mue3.setDescripcion("Muelle 3");
		//PersistentObject mue = (PersistentObject) p;
		
		muelles = new ServicesMuelle();
		try{
			muelles.salvarMuelle(mue3);
		}
		catch(BusinessException be){
			System.out.println(be.getMessage());
		}
		catch(SystemException se){
			System.out.println(se.getMessage());
		}
		
		mue4.setDescripcion("Muelle 4");
		//PersistentObject mue = (PersistentObject) p;
		
		muelles = new ServicesMuelle();
		try{
			muelles.salvarMuelle(mue4);
		}
		catch(BusinessException be){
			System.out.println(be.getMessage());
		}
		catch(SystemException se){
			System.out.println(se.getMessage());
		}
		
		mue5.setDescripcion("Muelle 5");
		//PersistentObject mue = (PersistentObject) p;
		
		muelles = new ServicesMuelle();
		try{
			muelles.salvarMuelle(mue5);
		}
		catch(BusinessException be){
			System.out.println(be.getMessage());
		}
		catch(SystemException se){
			System.out.println(se.getMessage());
		}
		
		
		prod.start();
		m1.start();
		m2.start();
		m3.start();
		m4.start();
		m5.start();
		
				
		
		
		
		
				/*
		//Creamos los camiones
		Map allCamiones = new TreeMap();
		for (int i=0; i<15; i++){
			Generador m = new Generador();
			String mat = m.matricula();
			double peso = (double)(Math.random()*5000);
			Camion c = new Camion(mat, "Ford", "80", peso);
			allCamiones.put(c.getMatricula(), c);
			
			ServicesCamion sc = new ServicesCamion();
			
			try{
				sc.salvarCamion(c);
			}catch(BusinessException be){
				System.out.println(be.getMessage());
			}
			catch(SystemException se){
				System.out.println(se.getMessage());
			}
					
		}*/

		//Generamos los muelles
		/*Muelle p = null;
		
		for(int i=1; i<6; i++){
			p = new Muelle(i);
			p.setDescripcion("Muelle " + i);
			//PersistentObject mue = (PersistentObject) p;
			
			ServicesMuelle muelles = new ServicesMuelle();
			try{
				muelles.salvarMuelle(p);
			}
			catch(BusinessException be){
				System.out.println(be.getMessage());
			}
			catch(SystemException se){
				System.out.println(se.getMessage());
			}
			
			Thread m = new Thread(p);
			m.start();
			
		}*/
		
		CargarLoginPanel lg = new CargarLoginPanel();
		lg.cargarLogin(prod.getAllCamiones());
		
		
	}
}
